package com.lovo.controller;


import com.lovo.utils.AlipayUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("alipay")
public class AlipayController {
    @Autowired
    private AlipayUtil alipayUtil;


    /**
     * 支付宝付款请调用此接口
     *
     * @param id    商户订单号
     * @param price 订单总金额
     * @param title 订单标题(不能是中文)
     * @return 支付宝官方封装的订单详细信息（包含订单信息和支付包提供的流水号等），返回参数无需做任何操作，原样返回就行
     */
    @RequestMapping("create")
    public String create(String id,String price,String title) {
        String pay = alipayUtil.pay(id, price, title);
        return pay;
    }

    /**
     * 异步通知后端，需要哪些信息去下方网站的业务参数查看，将相关参数传入此方法
     *
     * @param trade_no 支付宝交易号（必填项，退款需要）
     * @param buyer_id 买家支付宝账号ID
     */
    @PostMapping("notify")
    public void returnNotify(String trade_no, String buyer_id) {
        System.out.println("业务通知");
        //https://opendocs.alipay.com/open/270/105902?ref=api
        System.out.println("订单号：" + trade_no + ",买家id" + buyer_id);
    }

    /**
     * 支付宝退款调用此接口
     *
     * @param id    支付宝交易号
     * @param price 需要退款的金额
     * @param title 退款请求号(自定义，此请求号保证唯一，不唯一导致重复退款，如果调用接口失败或异常了，重试时需要保证退款请求号不能变更，防止该笔交易重复退款。)
     * @return 支付宝官方封装的退款信息（包含退款是否成功和支付宝提供的流水号等）,fund_change":"N".
     */
    @RequestMapping("refund")
    public String refund(String id,String price,String title) {
        String pay = alipayUtil.refund(id,price,title);
        return pay;
    }
}
